The spread of the Internet and the general availability of data connections are changing the way media is provided and used. In particular, conventional television and/or radio (i.e.—audio) services are increasingly giving way to digital network-based streaming media on demand and/or live streaming media. Such streaming media content can be delivered through any digital network, such as a cable company's set top box-based network or a cellular data network, or increasingly, through the Internet. The delivery can be to any suitable rendering device, such as an Apple TV or an Xbox 360, connected to a television or monitor, or can be to a rendering device and display, such as an Internet TV or a mobile device, such as player software executing on an Apple iPad, a laptop computer, a mobile phone, etc.
In most cases, streaming media is delivered in “chunks” through the network to the rendering device. Each chunk will typically contain the video and/or audio information required to render a selected duration, such as ten seconds, of the media at a given resolution or playback quality. When a rendering device plays a program, it first downloads a manifest, such as a playlist or equivalent data, that defines the chunks making up the program. The manifest can include a list of URIs pointing to the chunks, or can include a variety of other methods for identifying the relevant chunks, such as a set of http requests for byte ranges within a file, or a URI template which allows for a URI to be constructed, in a defined manner, to retrieve the program (e.g.—http//content.com/content/chunk{number}.ts, where {number} is a value that that is incremented to retrieve each subsequent chunk). The rendering device downloads the first one or more chunks of the program specified by the manifest into a player cache and begins playback of those chunks while one or more of the next needed chunks, as defined by the manifest, are being downloaded through the network. In this manner, playback of the program can start before the entire program has been downloaded. For a variety of reasons, the manifest cannot be amended or updated by the rendering device and any changes or updates must be provided to the rendering device from the network.
Live programs are broadcast in a similar manner but with a manifest that is dynamically updated from the network, having content added to the manifest as the live event transpires and the manifest may be updated during the streaming of the program to include URI's or other suitable identifiers of newly added content.
As the marketplace shifts towards delivery of content via such streaming media delivery systems, the ability to advertise in such streaming media has also offered new opportunities to advertisers and content deliverers. For example, it is desirable, when media is requested by a viewer, to select the advertisements to be shown and/or played during the delivery of the program (i.e.—targeted advertisements), the advertisements being selected based upon any suitable criteria, such as: viewer demographics, including where the rendering device/viewer is located and/or the particular viewer watching the content; the type of rendering device (mobile versus fixed) that the content is being played on; etc. In fact, a wide range of demographic and other criteria could be applied to the selection of which advertisements (or other content) will be shown to which viewers and the full range of such considerations is beyond the scope of the present invention.
However, the need to provide a predefined manifest, or equivalent, before beginning playback of a streaming program has limited the ability to dynamically insert content into streaming media to only the simplest cases. Specifically, the manifest must include a definition of each chunk of media to be rendered, including any advertising content to be included. Further, the suspension of the playback of one piece of content (e.g.—the main content) and start of playback of another piece of content (e.g.—advertising content) requires the manifest to include a discontinuity indicator (or equivalent).
Specifically, as the rendering device rendering the content employs various time indicators within the content to properly render the content, the rendering device must be notified when a different piece of content, and thus a different set of time indicators, is to be used.
In the HLS standard, discussed below, this notification to the rendering device is achieved through the use of a discontinuity indicator in the playlist, but other streaming standards have equivalent, or similar, requirements and features.
For example, assuming that an advertising break in a program includes three thirty-second ads, a discontinuity indicator, or equivalent, must be included in the manifest between the last part of the main program to be rendered prior to the advertising break and the first piece of advertising content (i.e.—the first thirty-second advertisement), another discontinuity indicator must be provided between the end of the first piece of advertising content and the start of the second piece of advertising content (i.e.—the second thirty-second advertisement), another discontinuity indicator must be provided between the end of the second piece of advertising content and the start of the third piece of advertising content (i.e.—the third thirty-second advertisement) and, finally, another discontinuity indicator must be provided between the end of the third piece of advertising content and the next piece of the main program to be played after the advertising break.
Thus, at the time of creation of the playlist, or other manifest, (prior to its transfer to a rendering device), the number of different pieces advertising content and the duration of each piece of that advertising content to be inserted into a requested program must be known and defined within the manifest.
As will be apparent, this need to define the manifest in such a manner requires the content for advertising breaks to be known at the time of creation of the manifest, or requires some sort of standardization of advertising breaks (i.e.—all ad breaks always comprise three thirty-second ads), and both such limitations are undesirable.
Accordingly, it is desired to have a system and method which enables the selection and insertion of content into streaming media without being subject to such limitations and, in particular, which enables the selection and insertion of content after the manifest has been provided to the rendering device.